package com.zjsru.plan2024.oneday;

import java.util.Arrays;

/**
 * 825. 适龄的朋友
 *
 * @Author: cookLee
 * @Date: 2024-11-17
 */
public class NumFriendRequests {

    /**
     * 主
     * \
     * 满足条件3就一定满足条件2
     * ages[y] <= 0.5 * ages[x] + 7
     * ages[y] > ages[x]
     * ages[y] > 100 && ages[x] < 100
     * \
     * 输入：ages = [16,16]
     * 输出：2
     * 解释：2 人互发好友请求。
     * \
     * 输入：ages = [16,17,18]
     * 输出：2
     * 解释：产生的好友请求为 17 -> 16 ，18 -> 17 。
     * \
     * 输入：ages = [20,30,100,110,120]
     * 输出：3
     * 解释：产生的好友请求为 110 -> 100 ，120 -> 110 ，120 -> 100 。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        NumFriendRequests numFriendRequests = new NumFriendRequests();
        int[] ages = new int[]{16, 17, 18};
        System.out.println(numFriendRequests.numFriendRequests(ages));
    }

    public int numFriendRequests(int[] ages) {
        Arrays.sort(ages);
        int len = ages.length;
        int ans = 0;
        int left = 0;
        int right = 0;
        for (int age : ages) {
            //简化计算
            if (age < 15) {
                continue;
            }
            while (ages[left] <= 0.5 * age + 7) {
                left++;
            }
            while (right + 1 < len && ages[right + 1] <= age) {
                right++;
            }
            ans += right - left;
        }
        return ans;
    }
}
